##############################################################################
#**#
#**#						Lap项目自动管理（-by 南宫子萍 @Respate）
#**#
#**# 此脚本用于自动添加子文件夹中的.C 文件，并指导子文件夹模块的编译
#**# 并生成lap_bin.o模块，由子Makefile调用
#**#
#**# 作 者：南宫子萍(@Respate)
#**# 时 间：2019-8-17
#**# QQ：	2085827949
##############################################################################


##############################################################################
# 工程版本信息和编译时间
##############################################################################
VERSION = $(shell date +"%Y")
PATCHLEVEL = $(shell date +"%M")
SUBLEVEL = $(shell date +"%d")
NAME = "-By Respate"
COMPILE_TIME = $(shell date +"%Y-%m-%d %H:%M:%S")
CROSS_COMPILE :=$(APP_CROSS_COMPILE)

##############################################################################
#	编译器 相关定义与环境变量导出
##############################################################################
#指定编译器
CROSS_COMPILE ?=$(APP_CROSS_COMPILE)

# 编译器
CC		= $(CROSS_COMPILE)gcc	
	
# 链接器	
LD 		= $(CROSS_COMPILE)ld

# 生成bin文件			
OBJCOPY	= $(CROSS_COMPILE)objcopy	

# 反汇编工具	
OBJDUMP	= $(CROSS_COMPILE)objdump	

# 生成库	
AR		= $(CROSS_COMPILE)ar		

INCDIR	:= $(shell pwd)
#c预编处理器 Flage ，Flage 为编译器可选的选项		-nostdlib 不使用标准库	-nostdinc 不使用标准库头文件
CPPFLAGS	:= -nostdlib -nostdinc
CPPFLAGS	=
#c编译器的Flage		-Wall 警告信息   -O2编译器优化等级(默认)  -fno-builtin 不使用标准库	 -I 指定头文件路径
CFLAGS		:= -Wall -O2 $(U_CPPFLAGS)


#导出宏定义的全局变量，给子文件夹中的Makefile使用
export CC LD OBJCOPY OBJDUMP AR CFLAGS CROSS_COMPILE


#自动添加文件规则
CONFIG_ATUO_ADFILE ?= y
ifeq ($(CONFIG_ATUO_ADFILE),y)
DIR_CFILES := $(foreach dir, $(shell pwd), $(wildcard $(dir)/*.c)) # 2.当前文件查找.c文件	
CFILES :=$(subst $(shell pwd)/, ,$(DIR_CFILES))	# 3.获取文件名
objs-y += $(CFILES:.c=.o)# 4. *.c替换成*.o
endif

# 目标名称
APP_TARG ?=
ifeq ($(APP_TARG),)
APP_TARG:=lap.o
endif

# $@ --代表目标文件
# $^ --代表所有的依赖文件
# $< --代表第一个依赖文件(最左边的那个)。

#指定编译规则
$(APP_TARG): $(objs-y)
	$(Q)$(CC) $(CFLAGS) $(USER_FLAG) $(INCDIRS) -o $@ $^
	@cp -f $@ $(BUILD_DIR)/ 

clean:
	$(Q)rm -f *.o
	$(Q)rm -f $(APP_TARG)


